A resposta é simples...para criar páginas dinâmicas. Aliadas as ferramentas Visual Studio ( code ou community), na minha opinião, é a maneira mais produtiva no desenvolvimento de sites pela dinâmica e abstração de seus componentes.
Em desenvolvimento web temos 2 tipos de páginas : as estáticas e as dinâmicas.
As páginas estáticas você já deve conhecer, são escritas em puro html, css e JavaScript ou coisa parecida e seu conteúdo é sempre o mesmo (estático).
As páginas dinâmicas elas tem um conteúdo dinâmico, ou seja, em seu conteúdo são adicionados informações que dependem da situação, condição ou regra de exibição dessas informações, ou seja, a mesma página é exibida com conteúdo diferente como no caso onde são exibidas as informações bancárias de um cliente específico, por exemplo. A página é a mesma mas seu conteúdo muda para cada cliente do banco neste exemplo.
Melhorando o exemplo acima, menciono uma consulta a minha conta bancária. A primeira coisa, sempre, será a identificação do cliente. Para isso sou obrigado a digitar usuário e senha numa página ( de login ) que envia ao servidor e esses dados me identificam como cliente do banco, ou seja fiz login no banco e fui aceito e depois disso o site do banco autoriza o envio de minhas informações bancárias via web, sempre com muita segurança. Sendo assim, por exemplo, o banco pode enviar, por exemplo, meu extrato bancário. Note bem que os dados são meus, pessoais e que ninguém mais, a não ser o banco, deve ter acesso a ele. Para isso a gente cria páginas de login para identificar o usuário e implementa a segurança reforçada no site como a criptografia dos dados no intuito de evitar fraudes e mau uso do site ( vide sql injection abaixo ).
Outra coisa que parece óbvia mas não é para todos é que você precisa ter um servidor web para publicar essa página. No caso do Visual Studio você consegue visualizar e depurar o código porque ele implementa num servidor web local ASP NET com essa funcionalidade. Contudo para que outros ( fora de sua rede local ) vejam seu trabalho na Internet você precisa de um provedor compatível com ASP NET se quiser adotar a linguagem e publicar seu código lá.
Outra coisa boa da linguagem ASP NET é que ela separa o HTML dos códigos que executam as tarefas da página.
Isto em ASP NET é chamado de 'CODE BEHIND'. Por exemplo, eu tenho uma página HTML com o código 'base' da página.
Digo 'base' porque o ASP NET pode colocar muita coisa dentro dos elementos de uma página ASPx, especialmente JavaScript.
E em outra 'página' tem código ( C#,Visual Basic, Phython, etc. Na realidade não é uma página mas sim uma DLL) que será
executado quando a página for exibida ( como no evento page load ) ou mesmo quando eu clico no botão um evento é
disparado e um código é chamado específico para esse botão, bem compartimentalizado que fica fácil achar o botão, o
código que ele chama.
No final todo código (C#, VB Net, etc.) da página é convertido numa DDL única
( de todo o projeto ) e as páginas ASP NET são convertidas para HTML e o servidor ASP NET faz a ligação entre
a página HTML e a dll com os códigos da página. Sendo assim um clique num botão na página HTML pode ser vinculado
a um código dentro de uma DLL através de um eventro tratado pelo servidor Web ASP NET.
Note que pelo conteúdo dinâmico da página posso exibir um monte de dados vindos de um banco de dados e o servidor tem funcionalidades que permitem complementar essas informações como, por exemplo, somar o valor dos campos de despesas e créditos e ainda calcular o 'SALDO' do Cliente. Note que essa informação não veio diretamente do banco de dados, mas utilizou as informações do banco de dados como fonte de informação para realizar os cálculos e elaborar o resultado ao cliente.
Muitos sites são dinâmicos por natureza senão não seriam úteis. Por exemplo, a previsão do tempo que muda de hora em hora, serviços de hora certa como o serviço Horário Oficial do Brasil.
Alguns sites são criados dinâmicos para facilitar as atualizações. Por exemplo, um jornal a freqüência de atualização das notícias é um ponto chave para o sucesso do jornal e se as alterações fossem feitas diretamente no HTML seria um custo de manutenção muito alto. Outro exemplo é o caso, por exemplo, de um site de apostas ou de resultados de jogos. Você imagina que trabalho não daria para alterar as páginas do site cada vez que chegasse uma notícia nova ou um time ganhasse ou perdesse teríamos que mudar o código HTML e publicar ele no site ? E um site desse tipo desatualizado é a morte dele mesmo.
Para fazer um site dinâmico normalmente colocamos os dados num banco de dados e o site, ou melhor, servidor web, exibe os resultados de consultas a esse banco de dados de acordo como programamos para que seja feita.
Sendo assim, se tenho um site de notícias para trocar uma notícia seria necessário apenas trocar o conteúdo de um campo de um banco de dados que, automaticamente o conteúdo da página exibida será alterada, bem mais simples que alterar uma página HTML do site ou coisa parecida.
Resumindo páginas dinâmicas são páginas cujo conteúdo é dinâmico, ou seja, variável dependendo de condições como login do usuário (no caso de um banco), do dia (previsão do tempo) e em inúmeras outras situações.
Uma coisa importante precisa ser mencionada... todos os 'malabarismos' que o servidor usa para montar a página dinâmica, no final, tudo é traduzido para puro HTML, CSS e JavaScript que é o que seu browser entende, certo ?
Fique tranquilo, tudo acaba em HTML, CSS e JavaScript mas no ASP NET vem com um conjunto de facilidades que faz o desenvolvimento ficar muito mais fácil. Por exemplo, a IDE (Visual Studio) que é uma mão na roda pois eu começo a digitar algo e a ferramenta completa automaticamente. Mas calma, vamos ficar no ASP NET no momento.
Ao pensar em criar uma nova ferramenta para desenvolvimento web Microsoft sabia que não devia inventar a roda novamente. Tem muita coisa pronta, rodando e a nova ferramenta precisaria seguir algumas regras fundamentais:
1• Tem que ser compatível com tudo que já está rodando atualmente. Portanto, HMTL, CSS e JavaScript continuam rodando normalmente e podem ser incorporados nativamente na nova linguagem.
2• As inovações precisam continuar a ser compatíveis com as ferramentas atuais. Sendo assim quando ela 'inventou' um novo elemento para ser usado na página ( como no caso dos controles de servidor (server control) eles poderiam fazer qualquer coisa mas, obrigatoriamente, teriam que continuar compatíveis com os elementos já existentes na web.
Adiantando um pouco para citar um exemplo, se você arrastar um calendário da caixa de ferramentas do asp net para sua página o visual studio vai te mostrar um calendário que você pode personalizar ele como quiser. Na compilação do código esse 'controle' calendário será renderizado como uma tabela e todo javascript necessário para que o calendário funcione perfeitamente o visual studio colocará automaticamente na página por um elemento chamado script manager. Sendo assim é só arrastar para a página que está pronto ...esse é o grande ganho de produtividade do asp net
Sendo assim a Microsoft pegou o que já existia e criou uma interface amigável para esses controles, uma IDE como Visual Studio. Por exemplo, ao colocar um texto numa página você precisa saber html para colocar a mensagem correta, css para exibir ela da maneira que deseja e javascript para proporcionar iterações com o usuário. Com ASP NET temos o mesmo elemento só que acompanhado de uma IDE muito boa que, por exemplo, tem uma caixa de propriedades onde você pode 'mexer' no html, css e javascript sem se preocupar como isto deve ser feito, a interface faz isso para você, colocando no lugar correto no html, css ou javascript automaticamente. O mais importante é que não precisamos lembrar dessas coisas de cabeça, elas estão na caixa de propriedades do elemento .
Sendo assim o ASP NET é uma ferramenta criada exclusivamente para dar maior produtividade para a atividade de desenvolvimento de páginas web. E o melhor :
1 • Não impede o uso de puro html, css ou javascript. Tudo que funcionava antes continua funcionando no ASP NET e integrados perfeitamente, um complementa o outro, nunca exclui nada.
2 • A ferramenta pode ser facilmente integrada com outras ferramentas de desenvolvimento web como Bootstrap, Ajax, modernizr. As tags para de scripts e css continuam funcionando normalmente e podem ser utilizadas em conjunto com as do ASP NET.
3 • Com o gerenciador de pacotes podemos agregar funcionalidades novas e que ainda não estão nas NameSpaces. Sendo assim se desejamos acessar o MS SQL Server basta ir no gerenciador de pacotes e pedir para incorporar o componente na aplicação E outro ponto importante, é que podemos escolher um leque amplo de componentes como, por exemplo, se a conexão é local podemos escolher um componente mais simples, se a conexão é remota podemos solicitar um componente que trabalhe com dados criptografados ou ainda, se for necessário podemos inserir um componente que trabalhe com certificados e aí teremos criptografia e autenticação dos servidores envolvidos.
4 •
O Javascript necessário para trabalhar com os componentes ASP NET é criado
dinâmicamente e automaticamente pelo próprio ASP NET
. Existe até um componente dentro do ASP NET
chamado Script Manager que controla a criação e envio do script de cada componente da página.
Para citar um exemplo o controle 'Calendar' exibe um calendário que o usuário pode navegar entre
os dias/meses/anos e escolher uma data e todo script necessário para seu funcionamento é criado
automaticamente pelo ASP NET.
Neste momento você deve conhecer as principais ferramentas da web : Html, CSS, JavaScript para construção de sites estáticos. Se não conhece recomendo aprender primeiramente as ferramentas e conceitos básicos para depois aprender as ferramentas e conceitos avançados de desenvolvimento web. ASP NET com certeza é um conceito avançado que exigirá o conhecimento dessas ferramentas básicas também.
Se você tem algum conhecimento pode questionar...mas eu posso criar páginas dinâmicas com JavaScript. É uma verdade mas o segredo é fazer bem feito, seguro e o mais produtivo possível e JavaScript não é a ferramenta recomendada por qualquer um que saiba desenvolver em JavaScript e em qualquer outra linguagem.
Lhe garanto que seja qual for seu rumo no desenvolvimento de sites para a web que você siga que essas ferramentas são imprescindíveis, básicas e jamais será perda de tempo aprendê-las. Contudo lembre-se que mesmo conhecendo essas ferramentas estão em constante evolução e é fundamental manter-se atualizado para melhor utilizar os novos recursos.
Digo, para iniciar, que só conhecer as ferramentas Html, CSS, JavaScript já é um grande passo porque elas são relativamente complexas, interligadas, cheias de recursos e fundamentais/básicas para qualquer desenvolvimento web. Contudo não são capazes de implementar uma 'inteligência' capaz de fazer uma página dinâmica, ou seja, uma página que seu conteúdo seja definido a partir de um login de usuário como uma página de um banco, por exemplo.
Se você conhece bem e sabe se virar profissionalmente nas ferramentas acima deve estar se perguntando o que mais resta de bom para aumentar minha produtividade no desenvolvimento Web?
Se você conhece bem web deve saber que com um javascript podemos fazer sites dinâmicos mas a palavra chave é Produtividade. O que mata o JavaScript é a baixa produtividade e a depuração difícil e pouco expansível em termo de novas funcionalidades, ou seja, normalmente só é possível descobrir um erro após subir o conteúdo da página e abrir a página num browser e aí descobrir o erro e corrigir e subir a página novamente e testar e talvez descobrir um novo erro. Deu pra perceber que não é muito legal desenvolver em JavaScript.
Mas ai você pergunta, uma depuração difícil não significa baixa produtividade no JavaScript ? Concordo mas tem outro motivo que torna o JavaScript pouco produtivo : Você tem que desenvolver tudo na mão, no código, muitas vezes do zero. E aí você se pergunta : e o que mal tem nisso ? Produtividade.
A Web não existe há muito tempo mas muito foi desenvolvida para essa plataforma. Se muito foi produzido não há como reaproveitar ou mesmo elaborar 'modelos' que agilizem esse desenvolvimento ?
A resposta é sim e isso já existe e são chamados de framewoks ou modelos que permitem que você incorpore funcionalidades ao seu projeto com um mínimo esforço. Tecnicamente é arrastar um recurso de uma barra de ferramentas para sua página que a 'IDE' coloca todo o código para você deixando para você apenas a customização de cores de fundo, tamanho de letra e mesmo assim com a ajuda da 'IDE' essas 'alterações' são guiadas para que você não erre e se errar a 'IDE' exibe um hachurado sob o erro informando que aquilo está errado.
Você que conhece bem CSS pode negar que o uso do BootStrap facilita muito estilizar sua página ? BootStrap é um 'framework' para a CSS. Mas a Google, o Facebook desenvolveram framewoks avançados como NodeJS (JavaScript) e que trazem em seu portfólio um leque de funcionalidades que uma equipe de analista demoraria anos para desenvolver. Porque uma ferramenta como Phython está ganhando tanto terreno ? Porque tem muita gente desenvolvendo funcionalidades para ela e deixando essas funcionalidades disponíveis. Sendo assim se você precisar de uma funcionalidade basta incluir a biblioteca onde ela foi disponibilizada em seu projeto e usar. Citando um exemplo, na plataforma Android se você precisar de Geoposicionamento tem uma biblioteca exatamente com essa funcionalidade que faz o desenvolvimento ficar muito mais simples.
Se você tem alguma experiência no desenvolvimento de site com certeza você já utilizou ferramentas de terceiros como
FontAwesome, JQuery, Materialize, Popper, Swiper e viu o ganho que deram nas suas páginas.
Se você não tem experiência deve procurar ferramentas que facilitem sua vida de desenvolvedor e que praticamente tudo que
precisa está ao alcance de uma pesquisa no Google.
Esse foi o gancho do .NET...simplificar e agilizar o desenvolvimento de aplicativos, em qualquer plataforma ( não só web, não só windows ). Por isso o Visual Studio é tão pesado... e cheio de recursos.
Sendo assim o ASP NET foi desenvolvido para agilizar o desenvolvimento e para isto conta com diversas ferramentas como o Visual Studio com o Intellisense que dá dicas sobre a sintaxe do elemento que você está tentando usar seja ele html, propriedades das tags html, JavaScript, Ajax, etc.
O Intellisense do Visual Studio não só ajuda a você a saber o que pode ser usado no elemento como dá dicas de possíveis erros como, por exemplo, digite uma tag html dentro da tag <center> você vai ver que em baixo fica uma 'ondinha verde' e se você passar o mouse sobre a 'ondinha verde' vai abrir uma dica informando que a tag não é mais suportada pelo html5. Digite um script e esqueça um ; ou mesmo o fechamento de uma chave...o visual studio dá uma dica sobre o erro desenhando uma 'ondinha vermelha' sobre o elemento indicando o erro.
Além disso a Microsoft criou componentes server side que agilizam muito o desenvolvimento web. É o caso do componente Calendário. Ele é composto de uma tabela com números dentro e para ficar bonito tem um monte de cores, divisões fazendo o controle ser superior até ao calendar do html5. Podemos customizar ele e o servidor 'customiza' o componente enviando os scripts para que ele funcione sem que você tenha que escrever uma linha de código..só a personalização do elemento se desejar.
Com o NET 5 a distância entre uma aplicação web e desktop ficou muito reduzida e com o tempo é intenção da Microsoft 'portar' a aplicação para qualquer ambiente nativamente sem que você tenha que alterar uma linha dela, somente dizendo...quero publicar no Android, IOS, Windows, Linux, IOT e ele ira compilar e publicar na plataforma desejada. Estamos aguardando o NET 6 ansiosamente.
Com o .NET 6 e o MAUI temos a possibilidade de desenvolver um código e somente na hora de compilar informar qual é a plataforma ( ou sistema ) que desejamos 'rodar' o aplicativo, windows, web, IOS, Linux, Android.
Mais uma vez informo que isso só é possível fazer essa 'portabilidade' de código porque foram desenvolvidos componentes para cada uma dessas plataformas e que possibilitam rodar a aplicação em qualquer uma delas sem que o programador tenha que conhecer a fundo e não é um web-view não, é nativo, ou seja, é impossível fazer um código mais 'enxuto' para o dispositivo e isto garante a melhor performance possível no equipamento de destino.
Inicialmente, quando a web deixou de ser estática (e era no seu início) e passou a ser dinâmica, ou seja, as páginas começaram a ser construídas dinamicamente de acordo com o conteúdo de bancos de dados entre outras possibilidades, o código informando como a página deveria ser construída era 'misturado' com o código html, tudo junto e integrado dinamicamente. Esta é a época do ASP Clássico.
Desde a época do asp clássico a Microsoft viu que misturar código dos scripts da linguagem
com HTML era uma bagunça, ficava um 'linguição', tudo junto e misturado tornando o desenvolvimento
mais difícil.
As páginas ficavam longas e a interação com o usuário era pobre, uma vez enviadas para o usuário ficavam
a mercê do JavaScript e do HTML e, funcionalmente, são terríveis (expecialmente em complexidade)
se comparados a uma aplicação server-side ou aplicativos nativos do windows.
Depois de dezenas de anos que o Java reinava solenemente a Microsoft sonhava abocanhar uma fatia ou mesmo dominar o
mercado das ferramentas de desenvolvimento web.
Inicialmente começou copiando as ideias dos concorrentes como fez quando lançou seu próprio java engine machine (JVM) mas ela
nunca se contentou com ser um coadjuvante e sonhou com o desenvolvimento de uma ferramenta a altura do java
(Como Netbeans ou Eclipse).
O ASP NET é uma evolução do ASP Clássico que é irmão gêmeo-siamês do PHP. Todo site ASP clássico roda PHP ...muito semelhantes. Foi uma senhora ferramenta para a sua época mas tinha graves restrições quantas as suas funcionalidades e o código ASP era disposto junto com o código HTML o que fazia o código ficar confuso, complexo e muito comprido, um linguição tudo junto e misturado.
ASP NET foi a resposta da Microsoft a necessidade de maior produtividade no desenvolvimento web. Nessa nova 'ferramenta' foi fornecida uma IDE (Integrated Development System) que permite codificar, testar e publicar os códigos num só lugar ainda permitindo incorporar bibliotecas de funcionalidades locais ( chamadas de NameSpaces ) e ainda componentes externos, obtidos por um gerenciador de pacotes que baixa, instala ou remove esses componentes do seu projeto. Se isso não bastasse no ASP NET podemos contar com frameworks (modelos) de desenvolvimento de aplicações web desenvolvido pela Microsoft ou qualquer outro desenvolvedor como Google e Facebook.
Informação : Framework em inglês significa modelo. No caso do ASP NET seria um 'Modelo de desenvolvimento' de aplicativos web. No caso do Bootstrap é um framework para a css ou modelagem de sites.
Foi aí que surgiu a ideia de lançar seu 'novo' 'engine' web ou, melhor dizendo, 'framework' onde as páginas web teriam o código html separado do código asp das páginas e a interação com elementos externos (como javascript) seria natural (pelo html) e expandiria a interação com o usuário e elementos externos ao asp mas pertencentes ao DOM da página.
Separando o 'código de montagem da página'(ASP NET) do 'código de exibição da página'(html) a visualização do código ficou muito mais fácil porque ficou compartimentalizada, ou seja, o click de um botão é tratado por um código. Um 'MouseOver' do mesmo botão é tratado por outro código (isto se quisermos tratar esses eventos).
Observando seus concorrentes ( como a SUN e a Delphi ) notou que o desenvolvimento de aplicações
via ambiente integrado de desenvolvimento(IDE) representava um grande ganho de produtividade.
As IDEs permitem que você codifique, depure, publique a aplicação web sem sair do ambiente de desenvolvimento.
Muito práticas e evitam erros de publicação.
Inicialmente as IDEs eram pagas e caras mas para popularizar seu produto criou versões
gratuitas como o Visual Studio Community Edition( ferramenta com que este site foi construído )
e o Visual Studio Code. Essas ferramentas são tão poderosas que tem até alguns malucos programando em
Java com elas.
Dentro da IDE a Microsoft incorporou 'componentes' para incrementar a produtividade. Ela 'encapsulou' os principais elementos html em uma barra de 'componentes' onde basta clicar no componente e arrastar para a página que o componente é inserido no documento web e tudo que ele precisa para funcionar é agregado a página automaticamente, sem uma linha de código sequer.
Ainda no intuito de aumentar a produtividade criou uma janela de propriedades do objeto que expões a grande maioria das propriedades do objeto HTML e também seus eventos. Com isso facilitou muito a vida dos desenvolvedores que não precisariam ser 'gênios' e saber tudo de html, javascript, css etc...para desenvolver uma simples página HTML.
Como ficar consultando web ou manuais é lerdo criou o intellisense que permite que você veja as possibilidades para o que esta digitando no momento. Por exemplo, se você está numa tag html tipo anchor o intellisense te informa os parâmetros possíveis para a tag como alt, href etc. Se você esta num script e começou a digitar <script o intellisense te exibe as opções do tipo type=....
Alguns componentes que precisam de um JavaScript complexo por traz o Visual Studio incorpora este script automaticamente de maneira que funcione em todos os browser sem que o desenvolvedor tenha que se preocupar com seu desenvolvimento. Chamou esse componente de 'script manager' e ele é criado dinâmicamente pelo servidor e enviado para o browser do cliente do jeito que o browser do cliente precisa pra funcionar perfeitamente.
A integração com componentes externos foi outro item que a Microsoft focou muito e conseguiu verdadeiras
façanhas em alguns deles.
Por exemplo, para integrar com o bootstrap ( que vem por default instalado numa app web nova ) a coisa
é simples mas para integrar com o AJAX ou JQUERY requer algumas sutilezas que o ASP NET caprichou e
deixou tudo certo para que funcionasse com perfeição fazendo com que cada componente ASP NET possa
ser 'acessado' pelo AJAX ou JQuery.
Uma outra coisa que foi acrescentado ao ambiente ASP NET foram alguns 'componentes' que facilitam
muito a nossa vida.
Por exemplo, a grande maioria dos sites web tem um sistema de autenticação de usuário
e porque não, para facilitar a vida do programador, criar componentes que fazem isso automaticamente. Foi
criado para isso duas funcionalidades chamadas de 'Autorization' e 'Authentication' que, juntas, fazem
a autenticação do usuário e autorizam ou não a navegar no site.
Por exemplo, muitas vezes temos que fazer uma barra de navegação para informar o usuário onde ele está
dentro do site especialmente quando o site é grande e as páginas parecidas umas com as outras. A Microsoft
pensou nisso e fez um componente que faz isso automaticamente.
Finalmente, a Microsoft criou dezenas de fontes de informação sobre a ferramenta ASP NET bem melhor que as referencias do JAVA e isso angariou muitos fãs porque não precisavam navegar em dezenas de sites para achar um código compatível com sua necessidade, no próprio site da Microsoft tinha exemplos completos de como usar o componente, o significado de cada parâmetro, faixa de valores etc. Tenho que concordar que alguns exemplos merecem alguns palavrões de agradecimento porque ao invés de exemplificar eles complicam, mas é a minoria felizmente.
Recentemente a Microsoft aderiu a comunidade open source (acredite ou não...se não pode vencê-los junte-se a eles) e fêz coisas que abalaram o 'ego' Microsoft. Por exemplo, criou ferramentas para ambientes do seus concorrentes. Por exemplo, temos o visual studio rodando em mac, linux etc. Sei que você não vai acreditar mas para aumentar o leque de aplicações a Microsoft criou uma versão do SQL para Linux. Caso você não saiba a grande maioria das vendas do Microsoft Windows Server foram para instalar o SQL Server nele e abriu mão disso porque viu que estava perdendo uma fatia de mercado que não para de crescer.
Outro ponto importante é o dos dispositivos móveis. A Microsoft para entrar no mercado de dispositivos móveis chegou a comprar a Nokia e instalou windows phone em toda linha de produção da Nokia. Foi um grande fracasso mas ela não desiste não, poucos anos depois comprou a Xamarin e com isso conseguiu uma ferramenta para desenvolvimento móvel muito versátil e poderosa. Eu prefiro o NODEJS e o IONIC mas não podemos negar que é uma senhora ferramenta o Xamarin. É como comparar C# e Java...não dá pra separar o pai do filho...um é a cara do outro.
Contudo nem tudo é facilitado pela presença da IDE. Por exemplo, se eu tenho um site cujo conteúdo eu desejo anexar ao site atual isso não pode ser feito, por exemplo, ao copiar e colar as páginas e pastas do site. Como elas não foram 'criadas' dentro da aplicação atual a incorporação externa faz com que a app atual sequer saiba que elas existam. Contudo você pode adicionar uma pasta existente ao seu projeto contudo o que não for puro html pode provocar erro. Por exemplo, quando eu arrasto um componente que exige o script manager para a página o visual studio incorpora automaticamente o script manager na página mas se o componente foi agregado externamente como garantir que o scripr manager foi agregado adequadamente?
A Microsoft começou atrás da SUN em desenvolvimento web mas não quiz deixar barato não. Nunca foi de entrar numa fatia de mercado para ser a segunda da lista. Foi atras e desenvolveu uma ferramenta que pela sua potencialidade e produtividade merece respeito e com isso ganhou mercado e conseguiu abrir um 'market share' para a Microsoft no desenvolvimento web.
O pessoal adora dar novos nomes a coisas antigas e dizer que são novas. Sendo assim, se você é um programador experiente, provavelmente você já ouviu falar dos elementos abaixo com outro nome. Afinal toda linguagem quer que pensemos que ela é especial ou exclusiva.
Cada aplicação web é um projeto. Um projeto asp net pode ser uma simples aplicação ou um conjunto de
aplicações. Por exemplo, eu posso criar um site para o 'frontend' da minha empresa e outro site para o
'backend' da empresa. Contudo posso colocar cada um projeto separado ou juntos numa única solução.
Note que tudo que a aplicação contém e precisa para funcionar está no projeto da aplicação.
Importante : O projeto define qual a tecnologia a ser empregada na aplicação, uma vez fixada vai ser seguida até o fim. Por exemplo, se você escolher que uma aplicação do projeto é ASP NET não poderá criar uma outra aplicação dentro do mesmo projeto que não seja ASP NET.
As extensões dos projetos no visual studio são .vbproj(para vb), .csproj para c# ou .dbproj para projetos de bancos de dados.
Podemos ter diversos projetos separados ou agrupados de acordo com nossa necessidade. Para agrupar projetos temos o conceito de solução que é um conjunto de projetos ou um conjunto de aplicações.
As extensões das soluções no visual studio são .sln(para projetos e seus componentes), e .suo que contém as opções ( configurações e personalizações ) do usuário para a solução.
Se você vai criar um novo projeto no visual studio community edition muitas vezes ficará confuso pela quantidade de opções que ele te apresenta para criar o projeto. Note bem que a Microsoft fez o Visual Studio de maneira que servisse para desenvolver 'todo tipo de aplicação' e em 'todas plataformas'. Por isso tantas opções são apresentadas ao criar um novo projeto.
Nota : A ferramenta Visual Studio Community Edition é configurável para o desenvolvimento de qualquer
tipo de aplicação. No momento de sua instalação definimos se queremos instalar os componentes necessários para
desenvolver em c++ ou não, ter as ferramentas de acesso ao desenvolvimento de aplicações móveis (Xamarin)
etc.
Vale dizer que instale apenas o que você vai utilizar e cada opção a mais que você escolha vai ocupar
mais espaço em disco e as atualizações automáticas do visual studio serão mais demoradas.
No Visual Studio Community Edition você pode desenvolver nas seguintes linguagens :
C#, C++, F#, JavaScript, Python, TypeScript, Visual Basic, XAML e com 'Linguagem de consulta' temos acesso a
linguagem LINQ que permite gerenciar bancos de dados SQL dentro do ambiente de desenvolvimento web.
Podemos compara o Visual Studio a uma ide avançada como Netbeans ou Eclipse.
AS plataformas são os sistemas operacionais que rodarão a aplicação. Pode ser Android, Azure, iOS, Linux, macOS, tvOS, Windows e Xbox.
As plataformas Android, iOS, tvOS rodam através do Xamarin - aplicações móveis.
Azure é a plataforma padrão para aplicações na nuvem e requer uma conta e um contrato com a Microsoft.
Para uma aplicação ASP NET rodar no Linux temos a opção ASP NET CORE que não é o mesmo que 'ASP NET framework' e precisa ser instalado o NET Core no Linux para rodar a aplicação ASP NET.
A aplicação XBOX é para desenvolvimento de games e utiliza ferramentas como o UNITY entre outras, especializadas para o desenvolvimento de games.
Você pode criar os seguintes tipos de projeto:
Console : É uma aplicação desktop Roda no prompt de comando e se parece com o DOS de milênios atrás. É muito útil para aplicações em servidores onde precisamos, por exemplo, copiar ou mover arquivos, trazer ou enviar arquivos via FTP etc. O foco desse tipo de aplicação é que deve rodar automaticamente sem a intervenção do usuário . É muito comum a gente fazer uma aplicação com essa característica (rodar automaticamente) e colocar no agendamento do windows para executar ela no tempo desejado.
Biblioteca: É um projeto contendo uma biblioteca de classes. Quando se trabalha com reaproveitamento de código de um projeto para outro a biblioteca de classes ajuda a gente a agregar nossos códigos mais rapidamente a novos projetos e com isto ganhamos produtividade.
Celular ou dispositivos móveis : É uma aplicação XAMARIN tanto para o Android como para iOS.
Área de trabalho : É muito parecida com o Console com a diferença que admite a comunicação com o usuário que normalmente se dá no inicio da aplicação que aguardará um 'gatilho' que fará iniciar o processo e depois rodará automaticamente.
Extensões : Podemos dizer que uma biblioteca de classe é uma 'extensão' do framework contudo existe bibliotecas de extensões
IOT : Internet of things : Internet das coisas - É o futuro de todos dispositivos domésticos, estarem
integrados com a web. Com isso teremos melhores serviços de apoio aos usuários. Por exemplo podemos
citar um ALEXA da Amazon ou mesmo serviços do tipo 'desejo criar um lembrete', 'quando estiver perto
do mercado não esquecer de comprar leite' e quando eu estiver perto de um supermercado através do gps
do meu celular recebo o aviso...você 'precisa comprar leite'. É futuro mas aposte que não está tão longe
assim.
Este tipo de projeto visa programar dispositivos IOT como Arduinos ou hardwares compatíveis com IOT.
Jogos : São os projetos para desenvolvimento de jogos que, para a Microsoft, concentrou seus esforços
na plataforma XBOX.
Existe plataformas desenvolvidas só para jogos como o UNITY entre outros.
A propósito, mesmo antes da crise do Corona vírus o faturamento de jogos foi superior ao cinematográfico.
Portanto, não menospreze esta plataforma mas não pense que é para iniciantes. Um jogo normalmente envolve
muita arte gráfica e bons desenvolvedores o que normalmente custa milhões.
Machine Learning: É um excelente exemplo de IA (Inteligencia Artificial).
Trata-se da construção de projetos 'tipados' baseados em :
1-Modelos/cenários : O que se espera da app(*1)
2-Dados: Dados necessários aos testes da app. Pode ser qualquer fonte de dados como um arquivo ou base de
dados
3-Train: Teste inicial e verificação de funcionamento.
4-Evaluate: Efetua cálculos e gera resultados e com eles temos a melhor definição do resultado esperado.
5-Code : Programação ou código da aplicação
(*1) O modelo ou cenário define que a app irá processar.
Escolhendo 'Previsão de preço' (Price prediction) será feita uma regressão com os dados fornecidos e
retornará um valor previsto. É o exemplo da variação do preço de uma casa ao longo dos anos e o seu valor
atual.
Escolhendo 'Analise de sentimentos' (Sentimental Analysis) os dados fornecidos serão classificados em
duas categorias e será previsto o melhor e o pior cenário para as estimativas apresentadas.
Escolhendo 'Cenário Customizado'(Custom cenario) você poderá escolher ou misturar as duas regras acima e
com isso você poderá definir quais regressões ou classificações que serão feitas com os dados e com isso
terá um 'resultado' que melhor atenda o que necessita.
Nuvem ou Cloud: Para Microsoft é sinônimo de Azure mas ela não deixou de fora os serviços dos seus concorrentes como AWS (Amazon) e Google já que dominam este mercado. Você pode criar com este tipo de projeto ferramentas para integração com projetos que já estão na nuvem.
Office. Permite desenvolver aplicativos para serem integrados com a plataforma office. Antigamente você precisaria comprar uma licença do office para criar este tipo de aplicação mas hoje, graças a este recurso, pode desenvolver aplicações para o office bem como desfrutar de uma integração muito bem feita entre web e office.
Outros
Serviço : A aplicação será executada como um serviço do windows, ou seja, por baixo (background) sem a interface ou intervenção do usuário. Este tipo de aplicação é muito usada em servidores quando desejamos que um serviço rode continuamente executando uma tarefa, do tipo, chegou um arquivo, processa e transfira para o destino.
Stream analytics : É um projeto normalmente feito com o Azure. Permite obter métricas ( dados que ajudam a tomar decisões sobre determinado assunto ) consultando qualquer fonte de dados. Por exemplo, quero saber qual a carga que uma pesquisa fará num servidor sql, por exemplo, e obter os limites do servidor
Teste: Permite executar testes em sistemas e analisar quanto tempo demora a resposta e dependendo desse tempo de resposta qualificar a app como aprovada ou reprovada no teste.
UWP : É uma aplicação universal windows (Universal Window Platform ) que é feita com C# e XAML.
É uma aplicação que só roda em Windows 10. Podemos fazer a aplicação em C#, C++, Visual Basic e
Javascript.
Pelo que pude notar é uma aplicação web que roda direto numa janela do windows como 'Progressive web apps'
como numa janela do Android ou iOS(WebView). Isso se tornou possível no Windows 10 porque a Microsoft
deu ao windows a capacidade de exibir html e outros recursos do browser. Contudo esse recurso é velho
tanto no Android como no iOS.
WEB. Finalmente chegamos ao desenvolvimento web com ASP NET. Este é o assunto desta área
Como uma aplicação Java tipica.
O código fonte (C#, VB NET, etc.) é compilado e gerado um código intermediário (uma dll).
O Código intermediário (dll) e tudo que ele precisa para funcionar é enviado ao servidor via serviço de publicação que pode ser um ftp por exemplo.
O servidor web deve estar preparado para executar os códigos asp net. Alguns componentes do framework precisam ser préviamente instalados para reconhecer e executar a aplicação asp net corretamente.
Sendo assim quando o servidor web recebe o request da pagina ele tem a capacidade de compilar o código intermediário e gerar o executável ( exe ).
Gerada a aplicação ele a executa e envia o resultado para o cliente via objeto response. Vejamos os detalhes.
Como não podiam copiar e colar do Java a Microsoft criou um padrão chamado CLR e o framework é capaz de
executar qualquer programa escrito nesse padrão. Hoje é um padrão open source e até a Borland Delphi tem
compilador para este padrão. Como o Java é um padrão bytecode ( no qual cada instrução foi convertida
num byte - por isso byte code ) e com isso melhora a segurança porque sabe quais são as instruções que o
programa está utilizando e se tem permissões para fazer esse tipo de coisa. Contudo torna, como no Java,
o programa 'descompilável' o que facilitar muito a pirataria de códigos.
Resumindo o programa compilador pelo Visual Studio é construído com um código intermediário
(MSIL ou Microsoft Intermediate Language) que será futuramente compilada pelo servidor web.
Você sabe que muitos dos aplicativos da Microsoft não é ela quem produz, são terceirizados. E, como sempre,
isto gerou muita confusão como o fabricante do Word criar códigos sem se importar com o que o fabricante
do Excel estava fazendo. Resultado: Um não era compatível com outro.
Para evitar confusões, como a passagem de parâmetros entre VB e C (antigos, não .NET porque o .NET já
usa o CLR), a Microsoft resolveu padronizar os tipos de dados de maneira que você poderia ter uma parte
de sua aplicação feita em VBNET e outra em C# e ambas falando uma com as outras, nativamente, através do
MSIL.
Digamos que criou uma API onde tudo que fosse compilado se quisesse 'falar' com o windows que utilizasse
esse 'padrão'.
Com o CTS podemos ter uma parte do programa em C# e outra em VBNET compilados juntos porque ambos seguem
o mesmo padrão e ao ser compilado (pelo MSIL) ficam totalmente compatíveis.
É a especificação da linguagem que segue a CTS. Com o CLS podemos ter as linguagens VB, C#, F#, Phyton etc rodando na mesma máquina porque geram códigos compatíveis com ela.
Para facilitar a vida dos programadores a Microsoft criou bibliotecas de funcionalidades e as agrupou por
finalidades e as chamou de 'Namespaces'. Portanto, Namespaces são bibliotecas de funções com a
mesma finalidade. Por exemplo, todas as funcionalidades de acesso a rede local foram colocadas na namespace
NET. As funções comuns a arquivos foram colocadas na namespace File.IO.
A Microsoft também aproveitou para expandir as funcionalidades do .NET criando Namespaces para outras
ferramentas como o SQL Server ou mesmo o Office. Você também pode no Windows forms (aplicações windows)
adicionar referencias externas as funcionalidades instaladas no windows. Veja os comandos Import do VB ou Uses
do C# que adicionam as NameSpaces em nossos projetos.
A aplicação asp net é separada em duas partes : as páginas aspx e uma DLL contendo o código asp escrito em VB ou C# NET.
O código que desenvolvemos na linguagem VBNET, C#, Phyton etc. ( chamamos de aplicação WEB ) é compilada para um código
intermediário(MSIL) e depositada em uma dll.
Esse código intermediário é enviado ao servidor. Chamamos de publicação do código.
Impreterivelmente o código fica na pasta bin do root do site, sempre.
Ao abrir a aplicação que exige o código o framework asp net compila o código intermediário da aplicação e gera o código executável. Por isso ao abrirmos aplicações grandes pela primeira vez no servidor eles demoram um pouco mais que ao abrir pela segunda vez.
As páginas ASPx são publicadas mas na mesma estrutura de pastas de seu desenvolvimento. Por exemplo, se eu criei uma pasta chamada usuários e nela coloquei a página login.aspx será assim que ela será enviada ao servidor.
Os recursos como a master page ficarão no root do site. Por esse motivo se você tem diversos sites asp net no seu servidor coloque nomes diferentes nas master pages para poder identificá-las.
As Master-Pages ficam no root do site...sempre. Por esse motivo você deve personificar o Site-Master de cada Aplicação. O motivo é simples...uma aplicação tem no cabeçalho, comum a todas as páginas, uma mensagem, por exemplo 'Compra e venda de Veículos'. O segundo site pode ter outra finalidade e no cabeçalho precisa exibir outra mensagem. Sendo assim as Master-Pages de cada site devem ser distintas e colocadas no root do site.
Ainda falta falar algumas coisas sobre o ASP NET e vou apresentar isso na página a seguir.
O ASP NET, basicamente é composto por 2 partes : Páginas ASPX (pagina.aspx) que contém os componentes do que será o documento HTML e uma DLL com o code-behind (pagina.aspx.vb) dessas páginas. Existe um terceiro arquivo associado a composição do documento que informa quais são os controles ASP.NET (pagina.aspx.designer.vb). Neste último qualquer label, caixa de texto(textbox), botão(button) que o ASP NET deve tratar seus eventos são declarados aqui.
As páginas ASPX são convertidas totalmente para o html, cada uma delas será uma página.aspx .
O code-behind de todas as páginas aspx ( vb, c#, etc) será compilado / carregado em uma única dll. Uma ddl nada mais é que um programa executável ( .exe ) com particularidades que pode ser carregado dinamicamente ( somente quando necessário )
Para revisar os conceitos básicos lembro:
1-O arquivo pagina.aspx (1) contém :
1.1 • Todo HTML, CSS e JavaScript,internamente ou extensões associadas.
1.2 • Controles Server-Side como asp:label, asp:textbox, etc.
1.3 • Meta tags ASP.NET como @Page, Language(C#,Vb,etc), EventWireup, MasterPageFiles, Codebegind=pagina.vb,inherits(herança), Script Manager.
2-O arquivo pagina.aspx.designer.vb (2) contém :
2.1 • Todos controles Server-Side da página (web ui controls).
2.2 • Declaração de tipo e outras definições desses Controles Server-Side.
3-O arquivo pagina.aspx.vb (3) contém :
3.1 • O Code-Behind dos controles server-side da página. Portanto, todo o código vb.net, asp.net, etc será escrito neste documento.
3.2 • Todos os códigos disparados por eventos dos controles server-side. O código de um simples click de um botão estará aqui.
3.3 • Códigos disparados pelo processamento dos componentes nativos do documento html como Page-Load, Post-Back, etc.
Finalizando o servidor IIS implementa as 'conexões' entre a página aspx e a dll de código. Essa 'conexão' entre o objeto da página html/aspx é dinâmica, ou seja, depende do objeto.
Por exemplo, ao arrastar um controle 'Calendar' para uma página aspx o controle calendar será convertido para uma simples 'table' html e as funcionalidades necessárias quando o cliente clica no objeto e 'algo' muda é feito em javascript. Note que pela característica do componente ele é client-side e por esse motivo o tratamento deve ser feito diretamente pelo JavaScript. Por exemplo, se eu clicasse numa data do calendário e associasse ao clique um evento ( Selection Change ) o tratamento desse clique seria tratado enviando o conteúdo da página ao servidor (postback ou submit) e aí poderíamos carregar a data escolhida numa caixa de texto, tipo:
protected void DataInicial_SelectionChanged(object sender, EventArgs e) {
lbldia.Text = DataInicial.TodaysDate.ToShortDateString();
}
Existe um componente chamado 'Script Manager' que é automaticamente colocado no documento pelo Visual Studio que controla o código Javascript enviado ao browser para implementar a funcionalidade do calendário. Por exemplo, se o browser do cliente é um Google Chrome o script manager envia o código para funcionar nesse browser. Se o browser do cliente for um Safari da Apple, o script manager vai enviar o código correspondente ao browser.
No caso do calendar temos as funcionalidades que são acionadas pelo usuário feitas em javascript ( como mês anterior / posterior ) porque toda a interação com o usuário com esse controle deve ser feita no lado do cliente (normalmente).
Mas e quando o componente é mais complexo, tipo um botão asp net? Neste caso o botão é convertido para uma tag html type=button e no clique da página o botão dá um submit / postback na página ( envia os dados da página para o servidor ) e aí a ddl ( code behind ) irá processar a requisição que implementará o processo a ser executado no clique do botão, como uma consulta a um servidor sql.
Quando a DLL com o code-behind (vb net, c# de cada botão, controle etc.) também é seguro porque o único que tem capacidade de chamar essa dll é o servidor Web-IIS e dentro da própria aplicação web, ou seja, um outro site ou qualquer coisa externa ao site não pode chamar nada dentro do site. Isto foi um grande aumento na segurança em relação aos sites ASP clássicos. Como quem deposita essa dll é o próprio usuário, isto torna a dll bem segura - Não quer dizer que não possa carregar um vírus ou coisa parecida mas sabemos de cara quem é o responsável pelo ataque. A propósito, se não sabe uma dll é exatamente um programa exe, ou seja, um programa executável nativamente no processador da máquina com a diferença que ele pode ser carregado dinamicamente apenas quando for necessário e ele é iniciado indiretamente via site web-ISS permitindo que um anti-vírus detecte um ataque ao carregar o objeto.
1-Você pode solicitar que a maioria dos elementos de uma página seja controlada pelo servidor IIS colocando a cláusula runat=server no elemento. Com isto podemos, por exemplo, pedir ao asp net que exiba ou esconda uma div ou mesmo podemos colocar dados na tag via o asp net.
2-Outra dica importante é o uso do parâmetro AutoEventWireup="false/true" nas tags asp net.
Podemos colocar esse parâmetro diretamante na tag <@ Page da página asp net e aí todos os controles da página estarão sujeitos a essa definição.
Exemplificando, se eu colocar um botão na página asp net que tenha o parâmetro AutoEventWireup="false" no parâmetro @page da página ao clicar no botão não será disparado o evento
click do mesmo.
Por outro lado posso fazer o contrário. Por exemplo, uma caixa de texto ao ter seu conteúdo alterado pode disparar um evento e isto só será feito se houver
AutoEventWireup="true" ou na tag @page ou como parâmetro direto da tag asp net textbox.